PrismaORM GetPayload Generic Typing
- aliases
- No value
- tags
- No value
- description
- No value
- links
- 0180 Prisma ๐
- status
- No value
- project
- false
- area
- false
- resource
- true
- title
- PrismaORM GetPayload Generic Typing
- created
- 2026-01-09T14:46:24
- updated
- 2026-01-09T14:50:12
Prisma GetPayload ๊ธฐ๋ฐ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ํ์
์ ์ ๊ฐ์ด๋
1. ๋ฌธ์ ๋ชฉ์
์ด ๋ฌธ์๋ Prisma Client ์ฌ์ฉ ์
Prisma.<Model>GetPayload<T> ํ์
์ ์ด๋ป๊ฒ, ์, ์ด๋๊น์ง ์ฌ์ฉํด์ผ ํ๋์ง๋ฅผ ๋ช
ํํ ๊ท์ ํ๊ธฐ ์ํ ๋ฌธ์๋ค.
ํนํ ๋ค์ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ค.
-
Prisma ๋ชจ๋ธ ํ์ ๊ณผ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ํ์ ์ ํผ์ฉํ๋ ๋ฌธ์
-
include / select์ ์ค์ ๋ฐํ ๋ฐ์ดํฐ ๊ฐ์ ํ์ ๋ถ์ผ์น -
์์์ฑ ๊ณ์ธต ํ์ ์ด ๋๋ฉ์ธ๊น์ง ์นจํฌํ๋ ์ค๊ณ ๋ถ๊ดด
2. ๋ฌธ์ ์ ์: Prisma ๋ชจ๋ธ ํ์ ์ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ํ์ ์ด ์๋๋ค
Prisma๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์ ๋ ๊ฐ์ง๋ฅผ ์ ๊ณตํ๋ค.
import { TicketHistory } from '@prisma/client';
์ด ํ์ ์ ๋ค์์ ์๋ฏธํ๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ row ๊ตฌ์กฐ
- ๊ด๊ณ(
relation)๋ ํฌํจํ์ง ์์ select,include์ ๋ฐ๋ฅธ shape ๋ณํ ๋ฐ์ โ
์ฆ, ์ด ํ์ ์ โํ ์ด๋ธ ์ ์โ ์ด์ง ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ๊ฐ ์๋๋ค.
๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์ด ํ์
์ Service / UseCase / Controller์์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ณ ,
์ด ์์ ๋ถํฐ ํ์
์์ ์ฑ์ ์ฌ์ค์ ํฌ๊ธฐ ์ํ๊ฐ ๋๋ค.
3. GetPayload<T>์ ์ญํ ๊ณผ ์ฑ
์
3.1 ์ ์ฒด์ฑ
Prisma.<Model>GetPayload<T>
์ด ํ์ ์ ๋ค์์ ์๋ฏธํ๋ค.
Prisma Client๊ฐ ํน์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ์ ๋ ๋ฐํํ๋ ๊ฒฐ๊ณผ ๊ฐ์ฒด์ ์ ํํ ํ์
์ฌ๊ธฐ์ ์ค์ํ ์ ์:
- ๋ชจ๋ธ ํ์ ์ด ์๋๋ค
- ์ํฐํฐ ํ์ ๋ ์๋๋ค
- ์ฟผ๋ฆฌ ๋ช ์ธ์ ์ข ์๋ ๊ฒฐ๊ณผ ํ์ ์ด๋ค
3.2 ์ ๋ค๋ฆญ T์ ์๋ฏธ
T๋ Prisma query argument์ ํ์
์ ๋ถ๋ถ์งํฉ์ด๋ค.
{
select?: ...
include?: ...
}
-
where,orderBy,take๋ฑ์ ํ์ shape์ ์ํฅ ์์ -
์ค์ง
select,include๋ง ๊ฒฐ๊ณผ ํ์ ์ ๊ฒฐ์ ํ๋ค
4. ์์ ๋ถ์
export type TicketHistoryWithRecordingConsents =
Prisma.TicketHistoryGetPayload<{
include: {
recordingConsent: {
select: {
phone: true;
consent: true;
};
};
};
}>;
์ด ํ์ ์ ๋ค์์ ํ์ ๋ ๋ฒจ์์ ์ ์ธํ๋ค.
TicketHistory์ ๊ธฐ๋ณธ ํ๋๋ ๋ชจ๋ ํฌํจrecordingConsent๊ด๊ณ๋ฅผ ์กฐ์ธ- ํด๋น ๊ด๊ณ์์๋
phone,consentํ๋๋ง ๋ ธ์ถ
์ฆ, ์ด ํ์ ์ ๋ค์ Prisma ์ฟผ๋ฆฌ์ 1:1 ๋์ํ๋ค.
prisma.ticketHistory.findMany({
include: {
recordingConsent: {
select: { phone: true, consent: true },
},
},
});
์ด ๋์ ๊ด๊ณ๊ฐ ๊นจ์ง๋ ์๊ฐ, ํ์ ์ ์๋ ์๋ชป๋ ๊ฒ์ด๋ค.
5. include์ select์ ์ญํ ๋ถ๋ฆฌ
5.1 include
- ๊ด๊ณ๋ฅผ ๊ฐ์ ธ์ค๊ฒ ๋ค๋ ์ ์ธ
- ๊ด๊ณ ์์ฒด๋ฅผ ๊ฒฐ๊ณผ์ ํฌํจ์ํจ๋ค
5.2 select
- ๊ฐ์ ธ์จ ๊ฐ์ฒด์ shape๋ฅผ ์ ํ
- ๋ฃจํธ ๋ชจ๋ธ๊ณผ ๊ด๊ณ ๋ชจ๋ธ ์์ชฝ์์ ์ฌ์ฉ ๊ฐ๋ฅ
5.3 ์์ฃผ ๋ฐ์ํ๋ ์คํด
include์select๋ ๋์ฒด ๊ด๊ณ๊ฐ ์๋๋ค- ๊ด๊ณ๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด
include๊ฐ ํ์ํ๋ค - ๊ด๊ณ์ ํ๋๋ฅผ ์ ํํ๋ ค๋ฉด ๊ทธ ์์์
select๋ฅผ ์ฌ์ฉํ๋ค
6. Nullable ๊ด๊ณ์ ๋ํ ์ธ์
Prisma์์ ๊ด๊ณ๋ ๊ธฐ๋ณธ์ ์ผ๋ก nullable์ด๋ค.
recordingConsent: {
phone: string;
consent: boolean;
} | null
์ด | null์ ํ์
์ค๋ฅ๊ฐ ์๋๋ผ ํ์ค ๋ฐ์์ด๋ค.
!๋ก ๋ฎ๋ ์๊ฐ, ๋ฐํ์ ์ฑ ์์ ์ ๋ถ ํธ์ถ์์๊ฒ ๋์ด๊ฐ๋ค- ๊ด๊ณ ์กด์ฌ๊ฐ ๋ณด์ฅ๋๋ค๋ฉด, ์ฟผ๋ฆฌ ์กฐ๊ฑด์ผ๋ก ๋ณด์ฅํด์ผ ํ๋ค
ํ์
์ ๊ฑฐ์ง๋ง์ ํ์ง ์๋๋ค.
๊ฑฐ์ง๋ง์ ํ๋ ๊ฑด ๊ฐ๋ฐ์๋ค.
7. ์ฌ์ฉ ์์น ๊ฐ์ด๋๋ผ์ธ
7.1 ์ฌ์ฉํด์ผ ํ๋ ๊ณณ
- Repository / Query Service
- Service ๋ ๋ฒจ์ ์กฐํ ๊ฒฐ๊ณผ
- Controller DTO ๋ณํ ์ง์
- CQRS์ Read Model / Projection
์ด ํ์ ์ **โ์กฐํ ๊ฒฐ๊ณผ ๋ช ์ธโ**๋ก ์ฌ์ฉํ๋ค.
7.2 ์ฌ์ฉํ๋ฉด ์ ๋๋ ๊ณณ
- ๋๋ฉ์ธ ์ํฐํฐ
- Aggregate Root
- Command / Event
- ๋น์ฆ๋์ค ๊ท์น์ ์ ๋ ฅ ํ์
GetPayload๋ Prisma์ ์ข
์๋ ํ์
์ด๋ค.
๋๋ฉ์ธ์ผ๋ก ์ฌ๋ผ์ค๋ ์๊ฐ, ์์กด์ฑ ์ญ์ ์์น์ด ๊นจ์ง๋ค.
8. ๋ค์ด๋ฐ ๊ท์น (๊ฐ์ )
๋ค์๊ณผ ๊ฐ์ ์ด๋ฆ์ ํผํ๋ค.
TicketHistoryWithSomething
์ด๋ฆ๋ง ๋ณด๊ณ :
- ์ด๋ค ์ฟผ๋ฆฌ์ธ์ง
- ์ด๋์ ์ฐ๋์ง
- ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ์ง
ํ๋จ์ด ๋ถ๊ฐ๋ฅํ๋ค.
๊ถ์ฅ ํจํด
TicketHistoryWithRecordingConsentRow
TicketHistoryRecordingConsentProjection
TicketHistoryWithRecordingConsentForAdminQuery
**โ์ฟผ๋ฆฌ ์ปจํ ์คํธโ ๋๋ โ์ฝ๊ธฐ ๋ชฉ์ โ**์ด ๋ฐ๋์ ๋๋ฌ๋์ผ ํ๋ค.
9. ์ด ํ์ ์ ๋ณธ์ง
์ ๋ฆฌํ๋ฉด ์ด ํ์ ์:
- ์ฌ์ฌ์ฉ์ ์ํ ํ์ โ
- ์ํฐํฐ ๋์ฉ โ
- DTO โ
์ด๋ค.
์ด ํ์ ์ ์ค์ง ํ๋๋ค.
โ์ด ์ฟผ๋ฆฌ๊ฐ ๋ฐํํ๋ ๋ฐ์ดํฐ์ ๊ณ์ฝ์โ
์ฟผ๋ฆฌ๊ฐ ๋ฐ๋๋ฉด ํ์
๋ ๋ฐ๋์ด์ผ ํ๋ค.
ํ์
์ด ๊ณ ์ ๋๊ธธ ์ํ๋ค๋ฉด, ๊ทธ๊ฑด ์ด๋ฏธ DTO ๊ณ์ธต์ ์ฑ
์์ด๋ค.
10. ๊ฒฐ๋ก
GetPayload๋ Prisma์ ๊ฐ์ฅ ๊ฐ๋ ฅํ ํ์ ๋๊ตฌ๋ค- ๋์์ ๊ฐ์ฅ ์ฝ๊ฒ ๋จ์ฉ๋๋ ๋๊ตฌ๋ค
- ์ฌ๋ฐ๋ฅด๊ฒ ์ฐ๋ฉด ํ์ ์์ ์ฑ์ ์ฌ๋ผ๊ฐ๋ค
- ์๋ชป ์ฐ๋ฉด ์ค๊ณ ์ ์ฒด๋ฅผ Prisma์ ์ข ์์ํจ๋ค
ํ์
์ ํธ์๋ฅผ ์ํด ์กด์ฌํ์ง ์๋๋ค.
์๋๋ฅผ ๊ณ ์ ํ๊ธฐ ์ํด ์กด์ฌํ๋ค.
๋ค์์ผ๋ก ์ด์ด๊ฐ ์ ์๋ ์ฃผ์ ๋ ๋ช ํํ๋ค.
GetPayload โ DTO๋ณํ ๋ ์ด์ด ๋ถ๋ฆฌPrisma.Args<typeof prisma.x, 'findMany'>ํจํด- Read Model๋ก ์น๊ฒฉ์ํค๋ ๊ธฐ์ค
- โ์กฐํ ์ ์ฉ ํ์ โ๊ณผ โ๋๋ฉ์ธ ํ์ โ์ ๊ตฌ๋ถํ๋ ์ฒดํฌ๋ฆฌ์คํธ